{{ template "head" . }}

{{ template "prom_right_table_head" }}
<tr>
  <th>Node</th>
  <th>{{ template "prom_query_drilldown" (args "sum(up{job='validator_nodes'})") }} / {{ template "prom_query_drilldown" (args "count(up{job='validator_nodes'})") }}</th>
</tr>
{{ template "prom_right_table_tail" }}

{{ template "prom_content_head" . }}
<h1>Node</h1>

<table class="table table-condensed table-striped table-bordered" style="width: 0%">
<tr>
  <th>Node</th>
  <th>Up</th>
  <th>CPU<br/>Used</th>
  <th>Memory<br/> Available</th>
</tr>
{{ range query "up{job='validator_nodes'}" | sortByLabel "instance" }}
<tr>
  <td><a href="node-overview.html?instance={{ .Labels.instance }}">{{ reReplaceAll "(.*?://)([^:/]+?)(:\\d+)?/.*" "$2" .Labels.instance }}</a></td>
  <td{{ if eq (. | value) 1.0 }}>Yes{{ else }} class="alert-danger">No{{ end }}</td>
  <td>{{ template "prom_query_drilldown" (args (printf "100 * (1 - avg by(instance)(irate(node_cpu_seconds_total{job='validator_nodes',mode='idle',instance='%s'}[5m])))" .Labels.instance) "%" "printf.1f") }}</td>
  <td>{{ template "prom_query_drilldown" (args (printf "node_memory_MemFree_bytes{job='validator_nodes',instance='%s'} + node_memory_Cached_bytes{job='validator_nodes',instance='%s'} + node_memory_Buffers_bytes{job='validator_nodes',instance='%s'}" .Labels.instance .Labels.instance .Labels.instance) "B" "humanize1024") }}</td>
</tr>
{{ else }}
<tr><td colspan=4>No nodes found.</td></tr>
{{ end }}


{{ template "prom_content_tail" . }}

{{ template "tail" }}
